/* Объявления локальных переменных x
   с классом памяти static */

int function1(void) 		//
{ 					// Определение функции function1
static int x=2; 		// с локальной переменной x, с классом 
return (x=x+5); 		// памяти static
} 					//

int function2(void) 		//
{ 					// Определение функции function2
int x=2; 			// с локальной переменной x
return (x=x+5); 		//
} 					//

int function3(void) 		//
{ 					// Определение функции function3
static int x=3; 		// с локальной переменной x, с классом
... 				// памяти static
} 					//

/* Основная функция программы */

void main(void)
{
...
int y; 			// Объявление целой локальной переменной y

/* функция function1 возвращает значение 7, т.к.
   начальное значение x=2, а после return x=x+5, x=7 */

y=function1();

/* функция function1 возвращает значение 12, т.к.
   значение x запомнилось, благодаря static,
   и при вызове этой функции х=7,
   а после return x=x+5, x=7+5=12 */

y=function1();

/* функция function2 возвращает значение 7, т.к
   начальное значение x=2, а после return x=x+5, x=7 */

y=function2();

/* функция function2 снова возвращает значение 7, т.к.
   значение x не запомнилось и при вызове этой функции
   х снова инициализируется 2, а после return x=x+5, x=7 */

y=function2();

...
}
